
// 使用 ES6 模块语法
class SerialPortModel {
  constructor(path, manufacturer, serialNumber, pnpId, locationId, vendorId, productId) {
    ///串口设备的路径或端口名称。
    this.path = path;
    ///设备的制造商。
    this.manufacturer = manufacturer;
    ///设备的序列号，用于唯一标识设备。
    this.serialNumber = serialNumber;
    ///PnP ID，用于设备的 Plug and Play 标识符，有时可能是 undefined。
    this.pnpId = pnpId || 'No PnP ID'; // 默认值为 'No PnP ID'
    ///设备在系统中的物理位置 ID。
    this.locationId = locationId;
    ///设备在系统中的物理位置 ID。
    this.vendorId = vendorId;
    ///设备的产品 ID（标识特定产品型号）。
    this.productId = productId;
  }

  // 添加一个方法，将实例转换为普通对象
  toPlainObject() {
    return {
      path: this.path,
      manufacturer: this.manufacturer,
      serialNumber: this.serialNumber,
      pnpId: this.pnpId,
      locationId: this.locationId,
      vendorId: this.vendorId,
      productId: this.productId
    };
  }

}
// 创建全局模型数组
const serialPortList = [];

// **提供操作数组的方法**
const SerialPortStore = {
  // 获取所有串口
  getAll: () => serialPortList,

  // 添加新的串口
  addPort: (portData) => {
    const port = new SerialPortModel(
      portData.path,
      portData.manufacturer,
      portData.serialNumber,
      portData.pnpId,
      portData.locationId,
      portData.vendorId,
      portData.productId
    );
    serialPortList.push(port);
  },

  // 清空串口列表
  clear: () => {
    serialPortList.length = 0;
  },
};

// 导出 `SerialPortStore` 供其他文件使用
module.exports = SerialPortStore;




// 1，path：表示串口设备的路径或端口名称。例如：/dev/tty.usbserial-A50285BI 表示在 UNIX 或类 UNIX 系统（如 macOS 和 Linux）上，设备的路径为 /dev/tty.usbserial-A50285BI。在 Windows 系统中，路径可能类似于 COM1, COM2 等。
// 2，manufacturer：串口设备的制造商名称。FTDI 是一个知名的串口转 USB 芯片制造商，通常这种信息对于识别设备很有用。
// 3，serialNumber：串口设备的唯一序列号。A50285BI 是设备的序列号，它帮助区分不同的设备，尤其是在多个相同型号的设备连接到计算机时。
// 4，pnpId：PnP（Plug and Play）ID，是设备的唯一标识符，通常用于识别设备与计算机的连接。它是操作系统用于标识外部设备的标识符，在某些设备或操作系统中可能没有提供，因此在此处为 undefined。
//     如果设备具有 pnpId，它通常与设备的硬件信息（如制造商、型号等）相匹配，用于快速识别和配置驱动程序。

// 5，locationId：串口设备的物理位置标识符。通常，它是一个唯一的标识符，用于标识设备在系统中的连接位置。14410000 是设备在物理连接中的位置（例如，设备连接到 USB 集线器的端口位置）。
// 6，vendorId：厂商ID（Vendor ID），是由 USB 组织分配给设备制造商的唯一标识符。0403 是 FTDI 的厂商 ID（这个 ID 表示 FTDI 作为制造商）。每个 USB 设备都有一个唯一的厂商 ID，用于区分不同的制造商。
// 7，productId：产品ID（Product ID），用于标识特定的设备或产品。6001 是 FTDI 提供的一个 USB 转串口的产品 ID。它与 vendorId 一起用于唯一标识某个产品。
